home *** CD-ROM | disk | FTP | other *** search
- package org.apache.xalan.xslt;
-
- import org.apache.xalan.xpath.xml.TreeWalker;
- import org.w3c.dom.Attr;
- import org.w3c.dom.Element;
- import org.w3c.dom.NamedNodeMap;
- import org.w3c.dom.Node;
- import org.xml.sax.SAXException;
-
- class TreeWalker2Result extends TreeWalker {
- ElemTemplateElement m_elem;
- XSLTEngineImpl m_processor;
- Node m_startNode;
-
- public TreeWalker2Result(XSLTEngineImpl var1, ElemTemplateElement var2) {
- super(var1.m_resultTreeHandler);
- this.m_elem = var2;
- this.m_processor = var1;
- }
-
- public void traverse(Node var1) throws SAXException {
- this.m_startNode = var1;
- super.traverse(var1);
- }
-
- protected void startNode(Node var1) throws SAXException {
- if (var1.getNodeType() == 1 && this.m_startNode == var1) {
- String var2 = var1.getNodeName();
- this.m_processor.m_resultTreeHandler.startElement(var2);
-
- for(Node var3 = var1; var3 != null; var3 = var3.getParentNode()) {
- if (var3.getNodeType() == 1) {
- NamedNodeMap var4 = ((Element)var3).getAttributes();
- int var5 = var4.getLength();
-
- for(int var6 = 0; var6 < var5; ++var6) {
- String var7 = null;
- Attr var8 = (Attr)var4.item(var6);
- String var9 = var8.getName();
- String var10 = var8.getValue();
- if (var9.startsWith("xmlns:")) {
- var7 = var9.substring(var9.indexOf(":") + 1);
- } else if (var9.equals("xmlns")) {
- var7 = "";
- }
-
- if ((var7 != null || var1 == var3) && !this.m_processor.m_pendingAttributes.contains(var9)) {
- if (var7 == null) {
- this.m_processor.m_pendingAttributes.addAttribute(var9, "CDATA", var10);
- } else {
- String var11 = this.m_processor.getResultNamespaceForPrefix(var7);
- if (var11 == null) {
- this.m_processor.m_pendingAttributes.addAttribute(var9, "CDATA", var10);
- } else if (!var11.equals(var10)) {
- this.m_processor.m_pendingAttributes.addAttribute(var9, "CDATA", var10);
- }
- }
- }
- }
- }
- }
-
- this.m_elem.processResultNS(this.m_processor);
- } else {
- super.startNode(var1);
- }
- }
- }
-